package de.tudarmstadt.ukp.muip.fibqdojo.visitor;

import com.google.common.base.Optional;

import de.tudarmstadt.ukp.muip.fibqdojo.Sentence;
import de.tudarmstadt.ukp.muip.fibqdojo.SentenceToken;
import de.tudarmstadt.ukp.muip.fibqdojo.Token;
import de.tudarmstadt.ukp.muip.fibqdojo.interfaces.IFIBQToken;
import de.tudarmstadt.ukp.muip.fibqdojo.interfaces.IStructureVisitor;
import de.tudarmstadt.ukp.muip.fibqdojo.japanese.JapaneseToken;

public class GetTokenVisitor implements IStructureVisitor{
    
    private Optional<IFIBQToken> theToken = Optional.absent();
    public Optional<IFIBQToken> getToken() {
        return theToken;
    }
    
    @Override
    public void visit(JapaneseToken token) {
        IFIBQToken wrap = (IFIBQToken) token;
        theToken = Optional.of(wrap);
    }
    
    @Override
    public void visit(Token token) {
        IFIBQToken wrap = (IFIBQToken) token;
        theToken = Optional.of(wrap);
    }

    @Override
    public void visit(SentenceToken token) {
        token.getToken().accept(this);
    }

    @Override
    public void visit(Sentence sentence) {
    }

}
